Computer virtualization is a technique that involves encapsulating a physical computing machine in a virtual machine (VM) that is executed under the control of virtualization software running on a hardware computing platform, or “host.” A group of hardware computing platforms may be organized as a cluster to provide resources for VMs. In a data center, it is common to virtualize hundreds, even thousands of VMs running on multiple clusters of host servers.
At times, a host running a set of VMs may undergo maintenance, including replacing faulty hardware components, replacing out-of-warranty hardware components with new components, upgrading firmware, upgrading installed software and applications, physically moving hardware, and installing new hardware components, among other things. Such maintenance can require VMs running on the host to be stopped, i.e., require VM downtime. One approach for eliminating such downtime uses live migration to move the VMs onto other hosts, after which maintenance is performed, and migrating the VMs back to the original host. Typically, this requires a system administrator to manually select migration targets to ensure that network connectivity and other resources needed by the VMs are not disrupted by the live migrations. This can be information intensive and tedious, as a large number of VMs (e.g., 100s) may run on the host server. Further, the system administrator may have to keep track of the migrated VMs and move those VMs back to the original host after the maintenance is performed.